import logging

# # 简版
# def log():
#     # 1. 使用basicConfig配置日志记录器
#     logging.basicConfig(
#         # filename=r"E:\code\framework_vip15\testLog\log.txt",
#         level=logging.WARNING,
#         encoding="utf-8",
#         format="日志:%(name)s-:级别%(levelname)s-时间:%(asctime)s-模块:%(module)s.py-第%(lineno)d行:%(message)s"
#     )
#     # 创建一个日志记录器
#     logger = logging.getLogger("Test")
#     # 将日志记录器返回给调用者使用
#     return logger

# 进阶版
"""
步骤分析:
1. 创建一个日志记录器
2. 配置日志记录器的级别
3. 配置日志记录器输出格式(可以分开配置,也可以统一配置)
4. 创建句柄并添加到日志记录器=====>控制台
5. 创建句柄并添加到日志记录器=====>文件
6. 返回日志记录器给调用者

"""
import logging, os
from logging.handlers import TimedRotatingFileHandler

# 日志存放路径
log_path = os.path.dirname(os.path.dirname(__file__)) + "/testLog/"


# 步骤分析:
def log():
    # 1. 创建一个日志记录器
    logger = logging.getLogger("Test")
    # 2. 配置日志记录器的级别
    logger.setLevel(logging.DEBUG)
    # 3. 配置日志记录器输出格式(可以分开配置,也可以统一配置)
    f1 = logging.Formatter("日志:%(name)s-:级别%(levelname)s-时间:%(asctime)s-模块:%(module)s.py-第%(lineno)d行:%(message)s")
    # 4. 创建句柄并添加到日志记录器=====>控制台
    sh = logging.StreamHandler()
    sh.setFormatter(f1)  # 设置日志出格式
    logger.addHandler(sh)
    # 5. 创建句柄并添加到日志记录器=====>文件
    fh = TimedRotatingFileHandler(filename=log_path + "log.txt", when="D", backupCount=30, encoding="utf-8")
    fh.setFormatter(f1)  # 设置日志出格式
    logger.addHandler(fh)
    # 6. 返回日志记录器给调用者
    return logger


# 提前准备一个日志记录器  (单例模式)
logger = log()

if __name__ == '__main__':
    logger.info("我是info")
    logger.debug("我是debug")
    logger.error("我是报错")
    logger.critical("我是灾难")
